import request from "@/utils/request";

const NOTICE_BASE_URL = "/notice";

class NoticeAPI {
  /**
   * 获取分页列表
   *
   * @param queryParams 查询参数
   */
  static getPage(queryParams: UserPageQuery) {
    return request<any, PageResult<UserPageVO[]>>({
      url: `${NOTICE_BASE_URL}/page`,
      method: "post",
      data: queryParams,
    });
  }

  /**
   * 获取公告表单详情
   *
   * @param userId 用户ID
   * @returns 用户表单详情
   */
  static getFormData(params: any) {
    return request<any, NoticeForm>({
      url: `${NOTICE_BASE_URL}/detail`,
      method: "get",
      params: params,
    });
  }

  /**
   * 添加公告
   *
   * @param data 用户表单数据
   */
  static add(data: NoticeForm) {
    return request({
      url: `${NOTICE_BASE_URL}/add`,
      method: "post",
      data: data,
    });
  }

  /**
   * 修改公告
   *
   * @param id 用户ID
   * @param data 用户表单数据
   */
  static update(data: NoticeForm) {
    return request({
      url: `${NOTICE_BASE_URL}/edit`,
      method: "post",
      data: data,
    });
  }

  /**
   * 批量删除公告
   *
   * @param ids 公告ID数组
   */
  static deleteByIds(data: any) {
    return request({
      url: `${NOTICE_BASE_URL}/del`,
      method: "post",
      data: data,
    });
  }
}

export default NoticeAPI;

/**
 * 列表分页查询对象
 */
export interface UserPageQuery extends PageQuery {
  /** 搜索关键字 */
  keywords?: string;

  /** 显示状态 */
  status?: number | string;

  /** 部门ID */
  deptId?: number;

  /** 开始时间 */
  createTime?: any;

  startDate?: number | string;

  endDate?: number | string;
}

/** 分页对象 */
export interface UserPageVO {
  /** 用户头像URL */
  avatar?: string;
  /** 创建时间 */
  createTime?: Date;
  /** 部门名称 */
  deptName?: string;
  /** 用户邮箱 */
  email?: string;
  /** 性别 */
  genderLabel?: string;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  mobile?: string;
  /** 用户昵称 */
  nickname?: string;
  /** 角色名称，多个使用英文逗号(,)分割 */
  roleNames?: string;
  /** 用户状态(1:启用;0:禁用) */
  status?: number;
  /** 用户名 */
  username?: string;
}

/** 用户表单类型 */
export interface NoticeForm {
  [x: string]: any;
  /** 用户头像 */
  avatar?: string;
  /** 部门ID */
  deptId?: number;
  /** 邮箱 */
  email?: string;
  /** 性别 */
  gender?: number;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  tel?: string;
  /** 昵称 */
  code?: string;
  /** 角色ID集合 */
  role_ids?: number[];
  /** 用户状态(1:正常;0:禁用) */
  status?: number;
  /** 用户名 */
  name?: string;
  /** 复制文本 */
  content?: string;
}
